package com.vecspace.dayu.code.template.httphandler;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;

import com.vecspace.dayu.code.template.pojo.TemplatePageComponent;
import com.vecspace.dayu.code.template.service.TemplatePageComponentService;
import com.vecspace.security.model.LoginContext;
import com.vecspace.web.servlet.model.BaseController;
import com.vecspace.web.servlet.model.HController;
import com.vecspace.web.servlet.model.Param;
import com.vecspace.web.servlet.model.Path;

@HController("dayucode_templatePageComponentHandler")
public class TemplatePageComponentHandler extends BaseController{
	
	/** 根据ID查询 模板页面布局元素 
	 * @param id   主键值
	 * @return TemplatePageComponent
	 * @throws Exception
	 * @author wanghua
	 */
	@Path("getTemplatePageComponent")
	public TemplatePageComponent getTemplatePageComponent(@Param("id")Long id) throws Exception{
		return templatePageComponentService.getTemplatePageComponent(id);
	}
	
	/**获取页面内的组件类型
	 * 
	 * @param layoutId
	 * @return
	 * @throws Exception 
	 * @author wanghua
	 */
	@Path("getTemplatePageComponents")
	public List<TemplatePageComponent> getTemplatePageComponents(@Param("pagelayoutId")Long pagelayoutId) throws Exception {
		return templatePageComponentService.getTemplatePageComponents(pagelayoutId);
	}
	
	/***获取功能页面内的组件类型
	 * 
	 * @param funcId 功能id
	 * @return
	 * @throws Exception 
	 * @author wanghua
	 */
	@Path("getTemplatePageComponentsByFuncId")
	public List<TemplatePageComponent> getTemplatePageComponentsByFuncId(@Param("funcId")Long funcId) throws Exception {
		return templatePageComponentService.getTemplatePageComponentsByFuncId(funcId);
	}
	
	/** 插入或修改 模板页面布局元素 ，item中的所有属性都会更新到数据库中（包括属性值为null的，也会将null更新到数据库，覆盖之前的值）。
	 * @param item	要保存的对象
	 * @return void
	 * @throws Exception
	 * @author wanghua
	 */
	@Path("saveTemplatePageComponent")
	public TemplatePageComponent saveTemplatePageComponent(@Param("item")TemplatePageComponent item) throws Exception{
		String loginUserId = LoginContext.getLoginId();
		return templatePageComponentService.saveViewTemplatePageComponent(item, loginUserId);
	}
	
	/** 根据ID删除 模板页面布局元素 
	 * @param id	主键值
	 * @return void
	 * @throws Exception
	 * @author wanghua
	 */
	@Path("deleteTemplatePageComponent")
	public void deleteTemplatePageComponent(@Param("pagelayoutId")Long id) throws Exception{		
		templatePageComponentService.deleteTemplatePageComponent(id);
	}
	
	@Autowired
	private TemplatePageComponentService templatePageComponentService;
}
